package ar.edu.utn.frba.dds.tp.code.dateParser;

import org.joda.time.Days;
import org.joda.time.LocalDate;



public class ParserFecha {

/**
 * 
 * @param fecha
 * @param formato
 * @return LocalDate 
 * 
 * @Description Dado un string que representa una fecha y un formato de parseo, retorna un LocalDate con las fechas 
 * del string cargadas. 
 * Si no puede parsear, lanza CantParseException.
 */
	public static LocalDate Parsear(String fechaEnString, Formato formato){
		return formato.parse(fechaEnString);		
	}

	/**
	 * 
	 * @param aDate
	 * @param otherDate
	 * @return Days
	 * 
	 * @description Dadas dos fechas (LocalDate de jodatime), devuelve la cantidad de dias entre una fecha y otra, independientemente
	 * de que fecha ponga adelante
	 */
	public static Days DiasEntre(LocalDate aDate, LocalDate otherDate) {
		Days difference = Days.daysBetween(aDate, otherDate);
		Days absoluteDifference = Days.days(Math.abs(difference.getDays()));
		return absoluteDifference;
	}

	/**
	 * 
	 * @param aDate
	 * @param otherDate
	 * @return boolean
	 * 
	 * @Description Verifica que aDate sea una fecha anterior a otherDate
	 */
	public static boolean EstaAntes(LocalDate aDate, LocalDate otherDate) {
		return (aDate.compareTo(otherDate) < 0);
	}
	
	
}
